package site.isscloud.project.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import site.isscloud.common.annotation.Excel;
import site.isscloud.common.core.domain.BaseEntity;

/**
 * 项目信息对象 pj_project
 *
 * @author Junhuang
 * @date 2025-10-07
 */
public class PjProject extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 项目id */
    private Long pjId;

    /** 项目编号 */
    @Excel(name = "项目编号")
    private String pjNo;

    /** 项目名称 */
    @Excel(name = "项目名称")
    private String pjName;

    /** 项目区域 */
    @Excel(name = "项目区域")
    private String pjDivison;

    /** 项目经理 */
    @Excel(name = "项目经理")
    private Long pjManager;

    /** 项目经理名称（用于显示） */
    private String pjManagerName;

    /** 项目销售 */
    @Excel(name = "项目销售")
    private Long pjSaler;

    /** 项目金额 */
    @Excel(name = "项目金额")
    private BigDecimal pjAmout;

    /** 项目开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "项目开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date pjStartDate;

    /** 项目预计结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "项目预计结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date pjEtimatedCompletionDate;

    /** 项目时间结束时间 */
    private Date pjCompletionDate;

    /** 项目简介 */
    private String pjDesc;

    /** 项目状态（1:工作中；2：已结项；3：挂起） */
    @Excel(name = "项目状态", readConverterExp = "1=工作中,2=已结项,3=挂起")
    private Integer pjState;

    public void setPjId(Long pjId)
    {
        this.pjId = pjId;
    }

    public Long getPjId()
    {
        return pjId;
    }

    public void setPjNo(String pjNo)
    {
        this.pjNo = pjNo;
    }

    public String getPjNo()
    {
        return pjNo;
    }

    public void setPjName(String pjName)
    {
        this.pjName = pjName;
    }

    public String getPjName()
    {
        return pjName;
    }

    public void setPjDivison(String pjDivison)
    {
        this.pjDivison = pjDivison;
    }

    public String getPjDivison()
    {
        return pjDivison;
    }

    public void setPjManager(Long pjManager)
    {
        this.pjManager = pjManager;
    }

    public Long getPjManager()
    {
        return pjManager;
    }

    public String getPjManagerName()
    {
        return pjManagerName;
    }

    public void setPjManagerName(String pjManagerName)
    {
        this.pjManagerName = pjManagerName;
    }

    public void setPjSaler(Long pjSaler)
    {
        this.pjSaler = pjSaler;
    }

    public Long getPjSaler()
    {
        return pjSaler;
    }

    public void setPjAmout(BigDecimal pjAmout)
    {
        this.pjAmout = pjAmout;
    }

    public BigDecimal getPjAmout()
    {
        return pjAmout;
    }

    public void setPjStartDate(Date pjStartDate)
    {
        this.pjStartDate = pjStartDate;
    }

    public Date getPjStartDate()
    {
        return pjStartDate;
    }

    public void setPjEtimatedCompletionDate(Date pjEtimatedCompletionDate)
    {
        this.pjEtimatedCompletionDate = pjEtimatedCompletionDate;
    }

    public Date getPjEtimatedCompletionDate()
    {
        return pjEtimatedCompletionDate;
    }

    public void setPjCompletionDate(Date pjCompletionDate)
    {
        this.pjCompletionDate = pjCompletionDate;
    }

    public Date getPjCompletionDate()
    {
        return pjCompletionDate;
    }

    public void setPjDesc(String pjDesc)
    {
        this.pjDesc = pjDesc;
    }

    public String getPjDesc()
    {
        return pjDesc;
    }

    public Integer getPjState()
    {
        return pjState;
    }

    public void setPjState(Integer pjState)
    {
        this.pjState = pjState;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("pjId", getPjId())
                .append("pjNo", getPjNo())
                .append("pjName", getPjName())
                .append("pjDivison", getPjDivison())
                .append("pjManager", getPjManager())
                .append("pjManagerName", getPjManagerName())
                .append("pjSaler", getPjSaler())
                .append("pjAmout", getPjAmout())
                .append("pjStartDate", getPjStartDate())
                .append("pjEtimatedCompletionDate", getPjEtimatedCompletionDate())
                .append("pjCompletionDate", getPjCompletionDate())
                .append("pjDesc", getPjDesc())
                .append("pjState", getPjState())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .append("remark", getRemark())
                .toString();
    }
}